package com.yss.reportworld.domain.arrwrap;

import java.util.Date;
import java.util.List;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yss.common.core.annotation.ExcelValid;
import com.yss.common.core.utils.easyexecl.DateConverter;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.yss.common.core.web.domain.BaseEntity;
import org.springframework.stereotype.Component;

/**
 * 报表基本信息表对象 rw_db_tc_rep_para
 *
 * @author yss
 * @date 2023-07-14
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("rw_db_tc_rep_para")
@Component("TcRepPara")
public class TcRepPara extends Model<TcRepPara> {


    @ExcelProperty("ID")
    @TableId("ID")
    private String id;

    /**
     * 报表ID
     */
    @ExcelProperty("REPORT_ID")
    @TableField("REPORT_ID")
    @ExcelValid(message = "【TC_REP_PARA】【REPORT_ID】不能为空")
    private String reportId;

    /**
     * 报表父节点
     */
    @ExcelProperty("PARENT_ID")
    @TableField("PARENT_ID")
    @ExcelValid(message = "【TC_REP_PARA】【PARENT_ID】不能为空")
    private String parentId;

    /**
     * 报表名称
     */
    @ExcelProperty("REPORT_NAME")
    @TableField("REPORT_NAME")
    @ExcelValid(message = "【TC_REP_PARA】【REPORT_NAME】不能为空")
    private String reportName;

    /**
     * 报表机构
     */
    @ExcelProperty("REPORT_ORG")
    @TableField("REPORT_ORG")
    @ExcelValid(message = "【TC_REP_PARA】【REPORT_ORG】不能为空")
    private String reportOrg;

    /**
     * 监管规则
     */
    @ExcelProperty("REGULATION_RULE")
    @TableField("REGULATION_RULE")
    @ExcelValid(message = "【TC_REP_PARA】【REGULATION_RULE】不能为空")
    private String regulationRule;

    /**
     * 报送格式
     */
    @ExcelProperty("SUBMIT_TYPE")
    @TableField("SUBMIT_TYPE")
    @ExcelValid(message = "【TC_REP_PARA】【SUBMIT_TYPE】不能为空")
    private String submitType;

    /**
     * 报送频度
     */
    @ExcelProperty("SUBMIT_FREQ")
    @TableField("SUBMIT_FREQ")
    @ExcelValid(message = "【TC_REP_PARA】【SUBMIT_FREQ】不能为空")
    private String submitFreq;

    /**
     * 报送时限
     */
    @ExcelProperty("SUBMIT_TIME_LIMIT")
    @TableField("SUBMIT_TIME_LIMIT")
    @ExcelValid(message = "【TC_REP_PARA】【SUBMIT_TIME_LIMIT】不能为空")
    private Long submitTimeLimit;

    /**
     * 报送截止时间
     */
    @ExcelProperty("SUBMIT_TIME")
    @TableField("SUBMIT_TIME")
    @ExcelValid(message = "【TC_REP_PARA】【SUBMIT_TIME】不能为空")
    private String submitTime;

    /**
     * 报送主体类型,字典值: A-基金公司/ B-基金公司资产管理子公司（境内）/ C-基金公司其他子公司（含境外）/ D-保险公司
     */
    @ExcelProperty("TRANS_TYPE")
    @TableField("TRANS_TYPE")
    @ExcelValid(message = "【TC_REP_PARA】【TRANS_TYPE】不能为空")
    private String transType;

    /**
     * 报表分组代码
     */
    @ExcelProperty("REPORT_GROUP")
    @TableField("REPORT_GROUP")
    @ExcelValid(message = "【TC_REP_PARA】【REPORT_GROUP】不能为空")
    private String reportGroup;

    /**
     * 是否启用
     */
    @ExcelProperty("IS_ENABLE")
    @TableField("IS_ENABLE")
    @ExcelValid(message = "【TC_REP_PARA】【IS_ENABLE】不能为空")
    private String isEnable;


    @ExcelProperty("REPORT_TABLENAME")
    @TableField("REPORT_TABLENAME")
    @ExcelValid(message = "【TC_REP_PARA】【REPORT_TABLENAME】不能为空")
    private String reportTablename;

    @ExcelProperty("REMARK")
    @TableField("REMARK")
    private String remark;

    /**
     * 创建人
     */
    @ExcelProperty("CREATE_PRSN")
    @TableField("CREATE_PRSN")
    private String createPrsn;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "CREATE_TIME", converter = DateConverter.class)
    @TableField("CREATE_TIME")
    private Date createTime;

    /**
     * 修改人
     */
    @ExcelProperty("MDFY_PRSON")
    @TableField("MDFY_PRSON")
    private String mdfyPrson;

    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "MDFY_TIME", converter = DateConverter.class)
    @TableField("MDFY_TIME")
    private Date mdfyTime;

    /**
     * 审核状态
     */
    @ExcelProperty("C_CHECKED")
    @TableField("C_CHECKED")
    private Long cChecked;

    /**
     * 审核人ID
     */
    @ExcelProperty("CHECK_ID")
    @TableField("CHECK_ID")
    private String checkId;

    /**
     * 审核人名字
     */
    @ExcelProperty("CHECK_NAME")
    @TableField("CHECK_NAME")
    private String checkName;

    /**
     * 审核时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "CHECK_TIME", converter = DateConverter.class)
    @TableField("CHECK_TIME")
    private Date checkTime;


    @ExcelProperty("DUTY_USER")
    @TableField("DUTY_USER")
    private String dutyUser;

    /**
     * 报表参数，0为不用产品品种，1为用产品品种
     */
    @ExcelProperty("REPORT_PARAM")
    @TableField("REPORT_PARAM")
    @ExcelValid(message = "【TC_REP_PARA】【REPORT_PARAM】不能为空")
    private String reportParam;

    /**
     * 报送时间类型
     */
    @ExcelProperty("REPORT_TIME_TYPE")
    @TableField("REPORT_TIME_TYPE")
    @ExcelValid(message = "【TC_REP_PARA】【REPORT_TIME_TYPE】不能为空")
    private String reportTimeType;

    /**
     * 是否以空文件报送,0为否(正常),1为以空文件报送
     */
    @ExcelProperty("ISEMPTY_SUBMIT")
    @TableField("ISEMPTY_SUBMIT")
    @ExcelValid(message = "【TC_REP_PARA】【ISEMPTY_SUBMIT】不能为空")
    private String isemptySubmit;

    /**
     * 是否关联产品下拉框,0,n
     */
    @ExcelProperty("ISRELATEPRODUCT")
    @TableField("ISRELATEPRODUCT")
    @ExcelValid(message = "【TC_REP_PARA】【ISRELATEPRODUCT】不能为空")
    private String isrelateproduct;

    /**
     * 报表分类
     */
    @ExcelProperty("REGULATION_RULE_ZL")
    @TableField("REGULATION_RULE_ZL")
    private String regulationRuleZl;

    /**
     * 监管规则子类
     */
    @ExcelProperty("REPORT_TYPE")
    @TableField("REPORT_TYPE")
    @ExcelValid(message = "【TC_REP_PARA】【REPORT_TYPE】不能为空")
    private String reportType;

    /**
     * 报表级别
     */
    @ExcelProperty("REPORT_LEVEL")
    @TableField("REPORT_LEVEL")
    @ExcelValid(message = "【TC_REP_PARA】【REPORT_LEVEL】不能为空")
    private String reportLevel;


    @ExcelProperty("ZTTYPE")
    @TableField("ZTTYPE")
    private String zttype;

    /**
     * 报表类型（bbsj，smartbi）
     */
    @ExcelProperty("REPORT_SORT")
    @TableField("REPORT_SORT")
    private String reportSort;

    /**
     * smartbi参数信息
     */
    @ExcelProperty("PARAM_INFO")
    @TableField("PARAM_INFO")
    private String paramInfo;

    /**
     * 配置参数:0-无,1-报表配置
     */
    @ExcelProperty("PZCS")
    @TableField("PZCS")
    @ExcelValid(message = "【TC_REP_PARA】【PZCS】不能为空")
    private String pzcs;

    /**
     * 数据日期
     */
    @ExcelProperty("FISP_DATE")
    @TableField("FISP_DATE")
    private Long fispDate;


    @ExcelProperty("TEMPLATE_TYPE")
    @TableField("TEMPLATE_TYPE")
    private Long templateType;


    @ExcelProperty("C_ZSBSXSNR")
    @TableField("C_ZSBSXSNR")
    private String cZsbsxsnr;

    /**
     * 数据编码
     */
    @ExcelIgnore
    @TableField("RW_DB_ID")
    private String rwDbId;


    @ExcelIgnore
    @TableField(exist = false)
    private List<String> ids;

    @ExcelIgnore
    @TableField(exist = false)
    private String hisVersion;

    @ExcelIgnore
    @TableField(exist = false)
    private String dataBaseType;

    //导出方式
    @ExcelIgnore
    @TableField(exist = false)
    private Integer exportType;

    @ExcelIgnore
    @TableField(exist = false)
    private String customerId;
}
